package xyz.zyl2020.java8.datetime;

import java.time.LocalDate;
import java.time.LocalTime;
import java.time.format.DateTimeFormatter;

/**
 * @author ZhuYinglong
 * @date 2020/11/5 0005
 */
public class LocalTimeDemo {

    public static void main(String[] args) {

        // 从默认时区的系统时钟获取当前时间
        LocalTime localTime1 = LocalTime.now();
        System.out.println("01: " + localTime1);

        // 通过时、分、秒创建一个 LocalTime 实例
        LocalTime localTime2 = LocalTime.of(10, 2, 15);
        System.out.println("02: " + localTime2);

        // 从一天中的第n秒获取 LocalTime 实例
        LocalTime localTime3 = LocalTime.ofSecondOfDay(100);
        System.out.println("03: " + localTime3);

        // 从一个文本字符串（如：10:15）获取一个 LocalTime 的实例，使用默认 DateTimeFormatter.ISO_LOCAL_TIME 格式
        LocalTime localTime4 = LocalTime.parse("10:01:12");
        System.out.println("04: " + localTime4);
        // 使用特定格式化，从文本字符串获取 LocalTime 的实例。
        LocalTime localTime5 = LocalTime.parse("11:02:13.111", DateTimeFormatter.ofPattern("HH:mm:ss.SSS"));
        System.out.println("05: " + localTime5);

        // 获取小时
        System.out.println("06: " + localTime5.getHour());
        // 获取分钟
        System.out.println("07: " + localTime5.getMinute());
        // 获取秒
        System.out.println("08: " + localTime5.getSecond());

        // 是否在指定时间之后
        System.out.println("09: " + localTime5.isAfter(localTime4));
        // 是否在指定时间之前
        System.out.println("10: " + localTime5.isBefore(localTime4));
        // 是否与指定时间相等
        System.out.println("11: " + localTime5.equals(localTime4));

        // 更改小时，并返回新的实例
        System.out.println("12: " + localTime5.withHour(12));
        // 更改分钟，并返回新的实例
        System.out.println("13: " + localTime5.withMinute(3));
        // 更改秒数，并返回新的实例
        System.out.println("14: " + localTime5.withSecond(14));

        // 小时增加指定值，并返回新的实例
        System.out.println("15: " + localTime5.plusHours(1));
        // 分钟增加指定值，并返回新的实例
        System.out.println("16: " + localTime5.plusMinutes(1));
        // 秒数增加指定值，并返回新的实例
        System.out.println("17: " + localTime5.plusSeconds(1));

        // 小时减去指定值，并返回新的实例
        System.out.println("18: " + localTime5.minusHours(1));
        // 分钟减去指定值，并返回新的实例
        System.out.println("19: " + localTime5.minusMinutes(1));
        // 秒数减去指定值，并返回新的实例
        System.out.println("20: " + localTime5.minusSeconds(1));

        // 按照指定格式返回一个字符串
        System.out.println("21: " + localTime5.format(DateTimeFormatter.ofPattern("HH:mm:ss")));
        System.out.println("22: " + localTime5.format(DateTimeFormatter.ofPattern("HH:mm:ss.SSS")));

        // 添加一个 LocalDate 获取一个 LocalDateTime 实例
        System.out.println("23: " + localTime5.atDate(LocalDate.now()));

    }
}
